package org.example.string;
/**
 * 对比一下使用 intern的性能差异
 * 结论：对于字符串大量存在的使用，使用intern()方法可以节省内存空间
 * @author youshang
 * @date 2022/03/29 10:45
 **/
public class StringInternEfficiency {
    static Integer  max_count = 1000 * 10000;
    static String[] arr = new String[max_count];


    public static void main(String[] args) {
        Integer[] data = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        long start = System.currentTimeMillis();
        for (int i = 0; i < max_count; i++) {
            arr[i] = new String(String.valueOf(data[i % data.length])); // 2797ms ，实例计数：10016546 大小:240 mb
            //arr[i] = new String(String.valueOf(data[i % data.length])).intern(); // 1071ms, 实例计数：2686051 大小:64465kb
        }
        long end = System.currentTimeMillis();
        System.out.println(end - start);

        try {
            Thread.sleep(10000000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
